package com.vista.usuario;

import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.table.TableColumn;

import modelosqlserver.Organizacion;
import modelosqlserver.PerfilSeguridad;
import modelosqlserver.Seguridad;
import modelosqlserver.Usuario;
import transacciones.TransactionDelegate;
import utilitario.FuncionesUsuario;
import utilitario.JTextFieldChanged;

import com.contenedor.Contenedor;
import com.controlador.Manejador;
import com.controlador.Manejador.AccesoPagina;
import com.controlador.Manejador.EstadoPagina;
import com.utilidades.CeldaRenderGeneral;
import com.utilidades.TestPropiedades;
import com.vista.FrmPrincipal;
import com.vista.InterfaceUsuario;
import com.vista.ListenerCambioPropiedad;
import javax.swing.ImageIcon;

public class DlgUsuario extends JDialog implements InterfaceUsuario {

	public AccesoPagina acceso;
	private EstadoPagina estDlgEml;
	private Manejador man;
	public String padre;
	/*
	 * Variables de Formulario
	 */
	private ModeloTablaUsuario modTabUsu;
	private TableColumn[] colTabEml;
	private CeldaRenderGeneral modTabPerCellRender;
	public boolean frmAbierto;
	private String bookMarkUsuIde;
	private String bookMarkEmlNom;
	private String bookMarkEmlEst;

	/**
	 * Creates new form DlgUsuario
	 */
	public DlgUsuario(FrmPrincipal parent) {

		super(parent, true);

		initComponents();
		crearModeloTablas();
		super.addWindowListener(new WindowAdapter() {
			@Override
			public void windowActivated(WindowEvent we) {
				// System.out.println("Actffffivado" + this.getClass().getName());
				frmAbierto = true;
			}
		});
	}

	/**
	 * This method is called from within the constructor to initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is always
	 * regenerated by the Form Editor.
	 */
	@SuppressWarnings("unchecked")
	// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
	private void initComponents() {

		panUsuario = new javax.swing.JPanel();
		etiEmlNom = new javax.swing.JLabel();
		etiEmlNom.setFont(new Font("Tahoma", Font.PLAIN, 14));
		scrTabPer = new javax.swing.JScrollPane();
		tabEml = new javax.swing.JTable();
		jLabel1 = new javax.swing.JLabel();
		jLabel1.setFont(new Font("Tahoma", Font.PLAIN, 14));
		etiEmlCel = new javax.swing.JLabel();
		etiEmlCel.setFont(new Font("Tahoma", Font.PLAIN, 14));
		txtUsuTelefono = new JTextFieldChanged(20);
		txtUsuTelefono.setFont(new Font("Tahoma", Font.PLAIN, 14));
		etiEmlCon = new javax.swing.JLabel();
		etiEmlCon.setFont(new Font("Tahoma", Font.PLAIN, 14));
		etiEmlEst = new javax.swing.JLabel();
		etiEmlEst.setFont(new Font("Tahoma", Font.PLAIN, 14));
		cmbEmlEstFiltro = new javax.swing.JComboBox();
		cmbEmlEstFiltro.setFont(new Font("Tahoma", Font.PLAIN, 14));
		cmbSecCod = new javax.swing.JComboBox();
		cmbSecCod.setFont(new Font("Tahoma", Font.PLAIN, 14));
		txtUsuNombre = new JTextFieldChanged(50);
		txtUsuNombre.setFont(new Font("Tahoma", Font.PLAIN, 14));
		txtUsuNombre.setHorizontalAlignment(SwingConstants.LEFT);
		txtUsuClave = new JTextFieldChanged(4);
		txtUsuClave.setFont(new Font("Tahoma", Font.PLAIN, 14));
		cmdEmlAgregar = new javax.swing.JButton();
		cmdEmlAgregar.setFont(new Font("Tahoma", Font.PLAIN, 14));
		cmdEmlModificar = new javax.swing.JButton();
		cmdEmlModificar.setFont(new Font("Tahoma", Font.PLAIN, 14));
		cmdEmlBuscar = new javax.swing.JButton();
		cmdEmlBuscar.setFont(new Font("Tahoma", Font.PLAIN, 14));
		cmdEmlEliminar = new javax.swing.JButton();
		cmdEmlEliminar.setFont(new Font("Tahoma", Font.PLAIN, 14));
		cmdCerrar = new javax.swing.JButton();
		cmdCerrar.setFont(new Font("Tahoma", Font.PLAIN, 14));
		txtUsuIde = new JTextFieldChanged(10);
		txtUsuIde.setHorizontalAlignment(SwingConstants.CENTER);
		txtUsuIde.setFont(new Font("Tahoma", Font.PLAIN, 14));
		etiEmlNom1 = new javax.swing.JLabel();
		etiEmlNom1.setFont(new Font("Tahoma", Font.PLAIN, 14));
		cmbUsuEstado = new javax.swing.JComboBox();
		cmbUsuEstado.setFont(new Font("Tahoma", Font.PLAIN, 14));
		jLabel2 = new javax.swing.JLabel();
		jLabel2.setFont(new Font("Tahoma", Font.PLAIN, 14));

		setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
		getContentPane().setLayout(null);

		panUsuario.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Administracion de Usuario", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, new java.awt.Color(0, 0, 0)));
		panUsuario.setLayout(null);

		etiEmlNom.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		etiEmlNom.setText("Nombre");
		panUsuario.add(etiEmlNom);
		etiEmlNom.setBounds(167, 20, 157, 20);

		scrTabPer.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

		tabEml.setModel(new javax.swing.table.DefaultTableModel(
				new Object[][] {
						{},
						{},
						{},
						{}
				},
				new String[] {

				}
				));
		tabEml.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
		tabEml.addMouseListener(new java.awt.event.MouseAdapter() {
			public void mousePressed(java.awt.event.MouseEvent evt) {
				tabEmlMousePressed(evt);
			}
		});
		tabEml.addKeyListener(new java.awt.event.KeyAdapter() {
			public void keyReleased(java.awt.event.KeyEvent evt) {
				tabEmlKeyReleased(evt);
			}
		});
		scrTabPer.setViewportView(tabEml);

		panUsuario.add(scrTabPer);
		scrTabPer.setBounds(8, 126, 695, 247);

		jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		jLabel1.setText("Seguridad");
		panUsuario.add(jLabel1);
		jLabel1.setBounds(10, 20, 147, 20);

		etiEmlCel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		etiEmlCel.setText("Telefono");
		panUsuario.add(etiEmlCel);
		etiEmlCel.setBounds(573, 20, 130, 20);

		txtUsuTelefono.setText("958958813");
		panUsuario.add(txtUsuTelefono);
		txtUsuTelefono.setBounds(573, 40, 130, 20);

		etiEmlCon.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		etiEmlCon.setText("Clave");
		panUsuario.add(etiEmlCon);
		etiEmlCon.setBounds(485, 75, 78, 20);

		etiEmlEst.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		etiEmlEst.setText("Estado");
		panUsuario.add(etiEmlEst);
		etiEmlEst.setBounds(573, 73, 130, 20);

		cmbEmlEstFiltro.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SUSPENDIDO", "ACTIVO", "BAJA" }));
		cmbEmlEstFiltro.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
		cmbEmlEstFiltro.addItemListener(new java.awt.event.ItemListener() {
			public void itemStateChanged(java.awt.event.ItemEvent evt) {
				cmbEmlEstFiltroItemStateChanged(evt);
			}
		});
		panUsuario.add(cmbEmlEstFiltro);
		cmbEmlEstFiltro.setBounds(470, 402, 125, 22);

		cmbSecCod.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TITULAR", "ADMINISTRADOR", "GERENTE", "CONTADOR", "Usuario" }));
		cmbSecCod.addItemListener(new java.awt.event.ItemListener() {
			public void itemStateChanged(java.awt.event.ItemEvent evt) {
				cmbEmlTipItemStateChanged(evt);
			}
		});
		panUsuario.add(cmbSecCod);
		cmbSecCod.setBounds(10, 40, 147, 22);

		txtUsuNombre.setText("Hernan");
		txtUsuNombre.addKeyListener(new java.awt.event.KeyAdapter() {
			public void keyReleased(java.awt.event.KeyEvent evt) {
				txtEmlNomKeyReleased(evt);
			}
		});
		panUsuario.add(txtUsuNombre);
		txtUsuNombre.setBounds(167, 40, 157, 20);

		txtUsuClave.setHorizontalAlignment(javax.swing.JTextField.CENTER);
		txtUsuClave.setText("1234");
		panUsuario.add(txtUsuClave);
		txtUsuClave.setBounds(485, 95, 78, 20);

		cmdEmlAgregar.setIcon(new ImageIcon(DlgUsuario.class.getResource("/com/vista/img/agregar.png"))); // NOI18N
		cmdEmlAgregar.setText("Agregar");
		cmdEmlAgregar.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
		cmdEmlAgregar.setMargin(new java.awt.Insets(0, 0, 0, 0));
		cmdEmlAgregar.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				cmdEmlAgregarActionPerformed(evt);
			}
		});
		panUsuario.add(cmdEmlAgregar);
		cmdEmlAgregar.setBounds(10, 384, 103, 40);

		cmdEmlModificar.setIcon(new ImageIcon(DlgUsuario.class.getResource("/com/vista/img/modificar.png"))); // NOI18N
		cmdEmlModificar.setText("Modificar");
		cmdEmlModificar.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
		cmdEmlModificar.setMargin(new java.awt.Insets(0, 0, 0, 0));
		cmdEmlModificar.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				cmdEmlModificarActionPerformed(evt);
			}
		});
		panUsuario.add(cmdEmlModificar);
		cmdEmlModificar.setBounds(119, 384, 103, 40);

		cmdEmlBuscar.setIcon(new ImageIcon(DlgUsuario.class.getResource("/com/vista/img/buscar.png"))); // NOI18N
		cmdEmlBuscar.setText("Buscar");
		cmdEmlBuscar.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
		cmdEmlBuscar.setMargin(new java.awt.Insets(0, 0, 0, 0));
		cmdEmlBuscar.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				cmdEmlBuscarActionPerformed(evt);
			}
		});
		panUsuario.add(cmdEmlBuscar);
		cmdEmlBuscar.setBounds(225, 384, 103, 40);

		cmdEmlEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/vista/img/eliminar.png"))); // NOI18N
		cmdEmlEliminar.setText("Eliminar");
		cmdEmlEliminar.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
		cmdEmlEliminar.setMargin(new java.awt.Insets(0, 0, 0, 0));
		cmdEmlEliminar.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				cmdEmlEliminarActionPerformed(evt);
			}
		});
		panUsuario.add(cmdEmlEliminar);
		cmdEmlEliminar.setBounds(330, 384, 103, 40);

		cmdCerrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/vista/img/cancelar.png"))); // NOI18N
		cmdCerrar.setText("Cerrar");
		cmdCerrar.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
		cmdCerrar.setMargin(new java.awt.Insets(0, 0, 0, 0));
		cmdCerrar.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				cmdCerrarActionPerformed(evt);
			}
		});
		panUsuario.add(cmdCerrar);
		cmdCerrar.setBounds(600, 384, 103, 40);

		txtUsuIde.setText("HMEND");
		txtUsuIde.addKeyListener(new java.awt.event.KeyAdapter() {
			public void keyReleased(java.awt.event.KeyEvent evt) {
				txtEmlDniKeyReleased(evt);
			}
		});
		panUsuario.add(txtUsuIde);
		txtUsuIde.setBounds(387, 95, 88, 20);

		etiEmlNom1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		etiEmlNom1.setText("IDE");
		panUsuario.add(etiEmlNom1);
		etiEmlNom1.setBounds(387, 75, 88, 20);

		cmbUsuEstado.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SUSPENDIDO", "ACTIVO", "BAJA" }));
		panUsuario.add(cmbUsuEstado);
		cmbUsuEstado.setBounds(573, 93, 130, 22);

		jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		jLabel2.setText("FiltrarUsuario");
		panUsuario.add(jLabel2);
		jLabel2.setBounds(470, 384, 125, 18);

		getContentPane().add(panUsuario);
		panUsuario.setBounds(5, 5, 713, 430);

		JLabel lblApellido = new JLabel();
		lblApellido.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblApellido.setText("Apellido");
		lblApellido.setHorizontalAlignment(SwingConstants.CENTER);
		lblApellido.setBounds(334, 20, 237, 20);
		panUsuario.add(lblApellido);

		txtUsuApellido = new JTextFieldChanged(50);
		txtUsuApellido.setFont(new Font("Tahoma", Font.PLAIN, 14));
		txtUsuApellido.setText("Mendoza Ticllahuanaco");
		txtUsuApellido.setBounds(334, 40, 237, 20);
		panUsuario.add(txtUsuApellido);

		JLabel lblCargo = new JLabel();
		lblCargo.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblCargo.setText("Cargo");
		lblCargo.setHorizontalAlignment(SwingConstants.CENTER);
		lblCargo.setBounds(10, 73, 175, 20);
		panUsuario.add(lblCargo);

		cmbUsuCargo = new JComboBox();
		cmbUsuCargo.setFont(new Font("Tahoma", Font.PLAIN, 14));
		cmbUsuCargo.setBounds(10, 93, 175, 22);
		panUsuario.add(cmbUsuCargo);

		cmbUsuArea = new JComboBox();
		cmbUsuArea.setFont(new Font("Tahoma", Font.PLAIN, 14));
		cmbUsuArea.setBounds(202, 93, 171, 22);
		panUsuario.add(cmbUsuArea);

		JLabel lblArea = new JLabel();
		lblArea.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblArea.setText("Area");
		lblArea.setHorizontalAlignment(SwingConstants.CENTER);
		lblArea.setBounds(202, 73, 171, 20);
		panUsuario.add(lblArea);

		java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
		setBounds((screenSize.width - 563) / 2, (screenSize.height - 338) / 2, 736, 467);
	}// </editor-fold>//GEN-END:initComponents

	private void tabEmlMousePressed(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_tabEmlMousePressed
		if (tabEml.getSelectedRow() > -1
				&& (estDlgEml.equals(EstadoPagina.VISUALIZANDO)
				|| estDlgEml.equals(EstadoPagina.BUSCANDO))) {

			estDlgEml = EstadoPagina.VISUALIZANDO;
			estDlgEml = EstadoPagina.VISUALIZANDO;

			seleccionarRegistroTablaUsuario();

		}// FIN DE VERIFICAR QUE EL REGISTRO SELECCIONADO ESTE EN LA TABLA
	}// GEN-LAST:event_tabEmlMousePressed

	private void tabEmlKeyReleased(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_tabEmlKeyReleased
		if (evt.getKeyCode() == KeyEvent.VK_UP
				|| evt.getKeyCode() == KeyEvent.VK_DOWN
				|| evt.getKeyCode() == KeyEvent.VK_PAGE_UP
				|| evt.getKeyCode() == KeyEvent.VK_PAGE_DOWN
				|| evt.getKeyCode() == KeyEvent.VK_ENTER
				|| evt.getKeyCode() == KeyEvent.VK_F2
				|| evt.getKeyCode() == KeyEvent.VK_TAB) {

			tabEmlMousePressed(null);

		}// Fin de if (evt.getKeyCode() == KeyEvent.VK_UP || evt.getKeyCode() == KeyEvent.VK_DOWN)
	}// GEN-LAST:event_tabEmlKeyReleased

	private void cmbEmlEstFiltroItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_cmbEmlEstFiltroItemStateChanged
		if (evt.getStateChange() == ItemEvent.SELECTED) {
			if (frmAbierto) {
				if (cmbEmlEstFiltro.getSelectedIndex() > -1) {
					if (estDlgEml.equals(EstadoPagina.VISUALIZANDO)) {

						// limpiarDlgUsuarioFiltrar();
						bookMarkEmlEst = cmbEmlEstFiltro.getSelectedItem().toString();
						man.obtenerListaUsuario(bookMarkEmlNom, bookMarkEmlEst);
						llenarTablaUsuario();
						refrescarFormulario();

					}// Fin de if (estDlgEml.equals(EstadoPagina.VISUALIZANDO))
				}// /Fin de if (cmbKarCnx.getSelectedIndex() > -1)
			}// Fin de if(frmAbierto){
		}// Fin de if(evt.getStateChange() == ItemEvent.SELECTED)
	}// GEN-LAST:event_cmbEmlEstFiltroItemStateChanged

	private void cmbEmlTipItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_cmbEmlTipItemStateChanged
		if (evt.getStateChange() == ItemEvent.SELECTED) {
			if (frmAbierto) {
				if (cmbSecCod.getSelectedIndex() > -1) {

					man.usu.setUsu_cargo(cmbSecCod.getSelectedItem().toString());

				}// /Fin de if (cmbKarCnx.getSelectedIndex() > -1)
			}// Fin de if(frmAbierto){
		}// Fin de if (evt.getStateChange() == ItemEvent.SELECTED)
	}// GEN-LAST:event_cmbEmlTipItemStateChanged

	private void cmdEmlAgregarActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdEmlAgregarActionPerformed

		if (cmdEmlAgregar.getText().equals("Agregar")) {

			estDlgEml = EstadoPagina.AGREGANDO;

			refrescarFormulario();
			txtUsuNombre.requestFocus();

		} else if (cmdEmlAgregar.getText().equals("Guardar")) {
			if (validarDlgUsuario()) {

				obtenerDatoDlgUsuario();

				switch (estDlgEml) {

				case AGREGANDO:

					bookMarkUsuIde = man.agregarUsuario();
					break;

				case MODIFICANDO:

					bookMarkUsuIde = man.actualizarUsuario();
					break;

				}// Fin de switch (estDlgCont)

				if (!bookMarkUsuIde.equals("")) {

					man.transactionDelegate.commit();
					man.usu.setObjeto(man.obtenerUsuario(bookMarkUsuIde));

					acceso = AccesoPagina.INICIAR;
					iniciarFormulario();

				}// Fin de if(bookMarkDevCod != 0)
				else {

					man.transactionDelegate.rollback();

					JOptionPane.showConfirmDialog(this,
							"¡¡¡SE CANCELO LA TRANSacceso!!!"
									+ "\n" + this.getClass().getName(),
							"Sistema",
							JOptionPane.PLAIN_MESSAGE, JOptionPane.INFORMATION_MESSAGE);

				}

			}// fin de if (validarDlgContacto())
		}// Fin de } else if (cmdContAgregar.getText().equals("Guardar"))
	}// GEN-LAST:event_cmdEmlAgregarActionPerformed

	private void cmdEmlModificarActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdEmlModificarActionPerformed
		if (cmdEmlModificar.getText().equals("Modificar")) {

			estDlgEml = EstadoPagina.MODIFICANDO;
			refrescarFormulario();

			txtUsuNombre.requestFocus();

		} else if (cmdEmlModificar.getText().equals("Cancelar")) {

			acceso = AccesoPagina.INICIAR;
			iniciarFormulario();

		}// FIN DE EVALUAR QUE VA HA HACER EL BOTON
	}// GEN-LAST:event_cmdEmlModificarActionPerformed

	private void cmdEmlBuscarActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdEmlBuscarActionPerformed

		estDlgEml = EstadoPagina.BUSCANDO;

		refrescarFormulario();
		txtUsuNombre.requestFocus();
	}// GEN-LAST:event_cmdEmlBuscarActionPerformed

	private void cmdCerrarActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdCerrarActionPerformed

		cerrar();

	}// GEN-LAST:event_cmdCerrarActionPerformed

	private void txtEmlNomKeyReleased(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_txtEmlNomKeyReleased

		// if (estDlgEml.equals(EstadoPagina.AGREGANDO) || estDlgEml.equals(EstadoPagina.MODIFICANDO)) {
		//
		// man.usu.setEml_nom(txtEmlNom.getText());
		//
		// }///Finde if(estDlgEml.equals(EstadoPagina.AGREGANDO))
		// else {
		//
		// if (txtEmlNom.getText().trim().length() > 0 && estDlgEml.equals(EstadoPagina.BUSCANDO)) {
		//
		// bookMarkEmlNom = txtEmlNom.getText().trim();
		// man.obtenerDBListaUsuario(bookMarkEmlNom, bookMarkEmlEst);
		// llenarTablaUsuario();
		//
		// }//Verificar que se esta buscando un dato
		// else if (txtEmlNom.getText().trim().length() == 0 && estDlgEml.equals(EstadoPagina.BUSCANDO)) {
		//
		// bookMarkEmlNom = "TODOS";
		// man.obtenerDBListaUsuario(bookMarkEmlNom, bookMarkEmlEst);
		// llenarTablaUsuario();
		//
		// }
		// }
	}// GEN-LAST:event_txtEmlNomKeyReleased

	private void cmdEmlEliminarActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdEmlEliminarActionPerformed
		// TODO add your handling code here:
	}// GEN-LAST:event_cmdEmlEliminarActionPerformed

	private void txtEmlDniKeyReleased(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_txtEmlDniKeyReleased
		// TODO add your handling code here:
	}// GEN-LAST:event_txtEmlDniKeyReleased

	/**
	 * @param args
	 *            the command line arguments
	 */
	public static void main(String args[]) {
		/*
		 * Set the Nimbus look and feel
		 */
		// <editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
		/*
		 * If Nimbus (introduced in Java SE 6) is not available, stay with the
		 * default look and feel. For details see
		 * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
		 */
		try {
			for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
				if ("Nimbus".equals(info.getName())) {
					javax.swing.UIManager.setLookAndFeel(info.getClassName());
					break;
				}
			}
		} catch (ClassNotFoundException ex) {
			java.util.logging.Logger.getLogger(DlgUsuario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
		} catch (InstantiationException ex) {
			java.util.logging.Logger.getLogger(DlgUsuario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
		} catch (IllegalAccessException ex) {
			java.util.logging.Logger.getLogger(DlgUsuario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
		} catch (javax.swing.UnsupportedLookAndFeelException ex) {
			java.util.logging.Logger.getLogger(DlgUsuario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
		}
		// </editor-fold>

		/*
		 * Create and display the dialog
		 */
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				DlgUsuario dialog = new DlgUsuario(null);
				dialog.addWindowListener(new java.awt.event.WindowAdapter() {
					@Override
					public void windowClosing(java.awt.event.WindowEvent e) {
						System.exit(0);
					}
				});
				dialog.setVisible(true);
			}
		});
	}

	// Variables declaration - do not modify//GEN-BEGIN:variables
	private javax.swing.JComboBox cmbUsuEstado;
	private javax.swing.JComboBox cmbEmlEstFiltro;
	private javax.swing.JComboBox cmbSecCod;
	private javax.swing.JButton cmdCerrar;
	private javax.swing.JButton cmdEmlAgregar;
	private javax.swing.JButton cmdEmlBuscar;
	private javax.swing.JButton cmdEmlEliminar;
	private javax.swing.JButton cmdEmlModificar;
	private javax.swing.JLabel etiEmlCel;
	private javax.swing.JLabel etiEmlCon;
	private javax.swing.JLabel etiEmlEst;
	private javax.swing.JLabel etiEmlNom;
	private javax.swing.JLabel etiEmlNom1;
	private javax.swing.JLabel jLabel1;
	private javax.swing.JLabel jLabel2;
	private javax.swing.JPanel panUsuario;
	private javax.swing.JScrollPane scrTabPer;
	private javax.swing.JTable tabEml;
	private javax.swing.JTextField txtUsuTelefono;
	private javax.swing.JTextField txtUsuIde;
	private javax.swing.JTextField txtUsuNombre;
	private javax.swing.JTextField txtUsuClave;
	private JTextFieldChanged txtUsuApellido;
	private JComboBox cmbUsuCargo;
	private JComboBox cmbUsuArea;

	// End of variables declaration//GEN-END:variables

	@Override
	public void iniciarFormulario() {

		if (acceso.equals(AccesoPagina.INICIAR)) {

			super.setTitle("Empresa : " + man.org.getOrg_nombre() + " - Nombre : " + man.usuSes.getUsu_nombre());

			estDlgEml = EstadoPagina.VISUALIZANDO;

			frmAbierto = false;

			iniciarInstancias();
			limpiarInstancias(AccesoPagina.INICIAR);
			limpiarFormulario();
			activarDlgUsuario(false);

			// ESTADO Usuario : ACTIVO, SUSPENDIDO, BAJA
			bookMarkEmlNom = (bookMarkEmlNom == null || bookMarkEmlNom.equals("")) ? "TODOS" : bookMarkEmlNom;
			bookMarkEmlEst = (bookMarkEmlEst == null || bookMarkEmlEst.equals("")) ? "ACTI" : bookMarkEmlEst;
			bookMarkUsuIde = man.usu.getUsu_ide();
			cmbEmlEstFiltro.setSelectedItem(bookMarkEmlEst);

			man.obtenerListaUsuario(bookMarkEmlNom, bookMarkEmlEst);
			llenarTablaUsuario();

			man.funUsu.ubicarRegistroTabla(tabEml, bookMarkUsuIde, 0);// Codigo de Usuario
			seleccionarRegistroTablaUsuario();

			frmAbierto = true;

		}// Fin de else if (acceso.equals(AccesoPagina.INICIAR))
		else if (acceso.equals(Manejador.AccesoPagina.ACTUALIZAR)) {
		}// Fin de if (acceso.equals(AccesoPagina.ACTUALIZAR))

		this.setVisible(true);
	}

	@Override
	public void iniciarInstancias() {

		man.transactionDelegate = (TransactionDelegate) Contenedor.getComponent("TransactionDelegate");
		man.testProp = (TestPropiedades) Contenedor.getComponent("TestPropiedades");
		man.funUsu = (FuncionesUsuario) Contenedor.getComponent("FuncionesUsuario");

		man.transactionDelegate.start();

		man.usu = (Usuario) Contenedor.getComponent("Usuario");
		man.lisUsu = (List<Usuario>) Contenedor.getComponent("ListaUsuario");

		man.org = (Organizacion) Contenedor.getComponent("Organizacion");
		man.lisOrg = (List<Organizacion>) Contenedor.getComponent("ListaOrganizacion");

		man.sec = (Seguridad) Contenedor.getComponent("Seguridad");
		man.lisSec = (List<Seguridad>) Contenedor.getComponent("ListaSeguridad");

		man.perfSec = (PerfilSeguridad) Contenedor.getComponent("PerfilSeguridad");
		man.lisPerfSec = (List<PerfilSeguridad>) Contenedor.getComponent("ListaPerfilSeguridad");
	}

	@Override
	public void limpiarInstancias(AccesoPagina parAcceso) {

		if (parAcceso.equals(AccesoPagina.INICIAR) || parAcceso.equals(AccesoPagina.FINALIZAR)) {
			if (man.usu.getUsu_ide() == null) {

				man.usu.limpiarInstancia();

			}// Fin de if(man.usu.getEml_nom() == null)
		}
		man.lisUsu.clear();
		man.lisOrg.clear();
		man.lisSec.clear();
		man.lisPerfSec.clear();

	}

	@Override
	public void limpiarFormulario() {

		cmbSecCod.setSelectedIndex(-1);
		txtUsuNombre.setText("");
		txtUsuApellido.setText("");
		txtUsuTelefono.setText("");
		txtUsuIde.setText("");
		cmbUsuCargo.setSelectedIndex(-1);
		cmbUsuArea.setSelectedIndex(-1);
		txtUsuIde.setText("");
		txtUsuClave.setText("");
		cmbUsuEstado.setSelectedIndex(-1);

	}

	@Override
	public void generarNuevoRegistro() {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void llenarFormulario() {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void activarFormulario(boolean parAct) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void refrescarFormulario() {

		switch (estDlgEml) {
		case VISUALIZANDO:

			activarDlgUsuario(false);
			tabEml.setEnabled(true);

			cmdEmlAgregar.setText("Agregar");
			cmdEmlModificar.setText("Modificar");

			cmdEmlAgregar.setEnabled(true);
			cmdEmlModificar.setEnabled(false);
			cmdEmlEliminar.setEnabled(false);
			cmdEmlBuscar.setEnabled((tabEml.getRowCount() > 0) ? true : false);
			cmbEmlEstFiltro.setEnabled(true);
			cmdCerrar.setEnabled(true);

			break;

		case MODIFICANDO:

			activarDlgUsuario(true);
			modTabUsu.setRowCount(0);

			cmdEmlAgregar.setText("Guardar");
			cmdEmlModificar.setText("Cancelar");

			cmdEmlAgregar.setEnabled(true);
			cmdEmlModificar.setEnabled(true);
			cmdEmlBuscar.setEnabled(false);
			cmdEmlEliminar.setEnabled(false);
			cmbEmlEstFiltro.setEnabled(false);
			cmdCerrar.setEnabled(false);
			break;

		case AGREGANDO:

			limpiarFormulario();
			activarDlgUsuario(true);
			modTabUsu.setRowCount(0);

			cmdEmlAgregar.setText("Guardar");
			cmdEmlModificar.setText("Cancelar");

			cmdEmlAgregar.setEnabled(true);
			cmdEmlModificar.setEnabled(true);
			cmdEmlBuscar.setEnabled(false);
			cmdEmlEliminar.setEnabled(false);
			cmbEmlEstFiltro.setEnabled(false);
			cmdCerrar.setEnabled(false);
			break;

		case BUSCANDO:

			limpiarFormulario();
			activarDlgUsuario(true);
			modTabUsu.setRowCount(0);

			cmdEmlModificar.setText("Cancelar");

			cmdEmlAgregar.setEnabled(false);
			cmdEmlModificar.setEnabled(true);
			cmdEmlBuscar.setEnabled(false);
			cmdEmlEliminar.setEnabled(false);
			cmbEmlEstFiltro.setEnabled(false);
			cmdCerrar.setEnabled(false);
			break;

		case SUSPENDIDO:

			activarDlgUsuario(false);
			tabEml.setEnabled(false);

			cmdEmlAgregar.setEnabled(false);
			cmdEmlModificar.setEnabled(false);
			cmdEmlBuscar.setEnabled(false);
			cmdEmlEliminar.setEnabled(false);
			cmbEmlEstFiltro.setEnabled(false);
			cmdCerrar.setEnabled(false);
			break;

		}// Fin de switch para estado del formaulario de Usuario
	}

	@Override
	public void obtenerDatoFormulario() {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void obtenerDatoBaseDato() {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	public boolean validarDlgUsuario() {

		if (!txtUsuNombre.getText().trim().equals("")) {
			if (cmbSecCod.getSelectedIndex() > -1) {
				if (cmbUsuEstado.getSelectedIndex() > -1) {

					return true;

				} else {
					JOptionPane.showConfirmDialog(null,
							"¡¡¡INGRESE ESTADO DEL Usuario!!!"
									+ "\n" + this.getClass().getName(),
							"Sistema Sadcon",
							JOptionPane.PLAIN_MESSAGE,
							JOptionPane.INFORMATION_MESSAGE);
				}
			} else {
				JOptionPane.showConfirmDialog(null,
						"¡¡¡INGRESE NUMERO DE DOCUMENTO!!!"
								+ "\n" + this.getClass().getName(),
						"Sistema Sadcon",
						JOptionPane.PLAIN_MESSAGE,
						JOptionPane.INFORMATION_MESSAGE);
			}
		} else {
			JOptionPane.showConfirmDialog(null,
					"¡¡¡INGRESE NOMBRE DE EMPLEDAO!!!"
							+ "\n" + this.getClass().getName(),
					"Sistema Sadcon",
					JOptionPane.PLAIN_MESSAGE,
					JOptionPane.INFORMATION_MESSAGE);
		}

		return false;
	}

	@Override
	public boolean guardarDatoBaseDato(String parModoGrabar) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void setManejador(Manejador parMan) {

		man = parMan;
	}

	@Override
	public void cerrar() {

		if (padre.equals("FrmPrincipal")) {
			int resMsg = JOptionPane.showConfirmDialog(this,
					"¿Desea cerrar formulario?",
					"Sistema de Cobranza",
					JOptionPane.YES_NO_OPTION,
					JOptionPane.QUESTION_MESSAGE);

			if (resMsg == 0) {

				this.dispose();
				limpiarInstancias(AccesoPagina.FINALIZAR);
				man.transactionDelegate.end();
				man.abrirPantalla("FrmPrincipal", "FrmPrincipal", Manejador.AccesoPagina.ACTUALIZAR);

			}// Fin de verificar que se desea cerrar el formulario
		}// El padre es cualquier formulario
		else {

			this.dispose();
			man.abrirPantalla(padre, "FrmPrincipal", Manejador.AccesoPagina.ACTUALIZAR);

		}// Fin de Verificar que el padre es cualquier ventana
	}

	private void obtenerDatoTabEml(int parNumFil) {

		bookMarkUsuIde = (String) modTabUsu.getValueAt(parNumFil, 5);// Codigo del Persona
		man.usu.setObjeto(man.obtenerItemListaUsuario(bookMarkUsuIde));

	}

	private void activarDlgUsuario(boolean parAct) {

		if (estDlgEml.equals(EstadoPagina.BUSCANDO)) {

			txtUsuNombre.setEnabled(parAct);

		}// Fin de if(estDlgPrv.equals(EstadoPagina.BUSCANDO))
		else if (!estDlgEml.equals(EstadoPagina.BUSCANDO)) {

			cmbSecCod.setEnabled(parAct);
			txtUsuNombre.setEnabled(parAct);
			txtUsuApellido.setEnabled(parAct);
			txtUsuTelefono.setEnabled(parAct);
			txtUsuIde.setEnabled(parAct);
			cmbUsuCargo.setEnabled(parAct);
			cmbUsuArea.setEnabled(parAct);
			txtUsuIde.setEnabled(parAct);
			txtUsuClave.setEnabled(parAct);
			cmbUsuEstado.setEnabled(parAct);

		}// Fin de else if(!estDlgPrv.equals(EstadoPagina.BUSCANDO))

	}

	private void crearModeloTablas() {

		crearModeloTablaUsuario();

	}

	private void crearModeloTablaUsuario() {

		modTabUsu = new ModeloTablaUsuario();
		tabEml.setModel(modTabUsu);

		modTabPerCellRender = new CeldaRenderGeneral();
		try {

			tabEml.setDefaultRenderer(Class.forName("java.lang.String"), modTabPerCellRender);
			tabEml.setDefaultRenderer(Class.forName("java.lang.Integer"), modTabPerCellRender);

		} catch (ClassNotFoundException ex) {
			Logger.getLogger(DlgUsuario.class.getName()).log(Level.SEVERE, null, ex);
		}

		// tabPer.addPropertyChangeListener(new ModTabDetKarPropiedad(this, tabDetKar));

		tabEml.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		tabEml.getTableHeader().setReorderingAllowed(false);
		tabEml.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

		String[] header = { "Ide", "Mail", "Nombre", "Estado", "Area", "Clave", "usu_ver" };
		String[] tipo = { "String", "String", "String", "String", "String", "String", "Integer" };

		int[] ancho = { 100, 90, 60, 100, 100, 60, 30 };

		colTabEml = new TableColumn[header.length + 1];
		for (int iteHead = 0; iteHead < header.length; iteHead++) {

			colTabEml[iteHead] = tabEml.getColumn(header[iteHead]);
			colTabEml[iteHead].setResizable(true);
			colTabEml[iteHead].setPreferredWidth(ancho[iteHead]);
			colTabEml[iteHead].addPropertyChangeListener(new ListenerCambioPropiedad());
			if (ancho[iteHead] == 0) {

				tabEml.getColumnModel().getColumn(iteHead).setMaxWidth(0);
				tabEml.getColumnModel().getColumn(iteHead).setMinWidth(0);
				tabEml.getTableHeader().getColumnModel().getColumn(iteHead).setMaxWidth(0);
				tabEml.getTableHeader().getColumnModel().getColumn(iteHead).setMinWidth(0);

			}// Fin de if (anchoHeader[iteHead] == 0)
		}// Recorrer la tabla de encabezados
	}// Fin de crearModeloTablaUsuario

	private void llenarDlgUsuario() {

		cmbSecCod.setSelectedItem(man.sec.getSec_cod());
		txtUsuNombre.setText(man.usu.getUsu_nombre());
		txtUsuApellido.setText(man.usu.getUsu_apellido());
		txtUsuTelefono.setText(man.usu.getUsu_telefono());
		txtUsuIde.setText(man.usu.getUsu_ide());
		cmbUsuCargo.setSelectedItem(man.usu.getUsu_cargo());
		cmbUsuArea.setSelectedItem(man.usu.getUsu_area());
		txtUsuClave.setText(man.usu.getUsu_clave());
		cmbUsuEstado.setSelectedItem(man.usu.getUsu_estado());

	}

	private void llenarTablaUsuario() {

		modTabUsu.setRowCount(0);
		modTabUsu.setRowCount(man.lisUsu.size());
		int numItem = 0;
		Usuario varUsu;
		Iterator iteDetNotPed = man.lisUsu.iterator();

		while (iteDetNotPed.hasNext()) {

			varUsu = (Usuario) iteDetNotPed.next();

			modTabUsu.setValueAt(varUsu.getUsu_ide(), numItem, 0);// Nombre
			modTabUsu.setValueAt(varUsu.getUsu_mail(), numItem, 1);// Tipo
			modTabUsu.setValueAt(varUsu.getUsu_nombre(), numItem, 2);// Numero
			modTabUsu.setValueAt(varUsu.getUsu_estado(), numItem, 3);// Direccion
			modTabUsu.setValueAt(varUsu.getUsu_area(), numItem, 4);// Celular
			modTabUsu.setValueAt(varUsu.getUsu_clave(), numItem, 5);// Usuario
			modTabUsu.setValueAt(varUsu.getUsu_ver(), numItem, 6);// eml_ver

			numItem++;
		}// Fin de while (iteDetNotPed.hasNext())
	}

	@Override
	public boolean validarFormulario() {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	private void obtenerDatoDlgUsuario() {

		man.obtenerFechaHoraActual();

		man.usu.setUsu_ide(txtUsuIde.getText());
		man.usu.setOrg_cod(man.org.getOrg_cod());
		man.usu.setUsu_mail("");
		man.usu.setUsu_nombre(txtUsuNombre.getText());
		man.usu.setUsu_apellido(txtUsuApellido.getText());
		man.usu.setUsu_cargo(cmbUsuCargo.getSelectedItem().toString());
		man.usu.setUsu_estado(cmbUsuEstado.getSelectedItem().toString());
		man.usu.setUsu_propietario("");
		man.usu.setUsu_fecing(man.fechaActual);
		man.usu.setUsu_fecexp(man.fechaActual);
		man.usu.setUsu_area(cmbUsuArea.getSelectedItem().toString());
		man.usu.setUsu_clave(txtUsuClave.getText());
		man.usu.setUsu_logbloq("N");
		man.usu.setUsu_pregsec("");
		man.usu.setUsu_ressec("");
		man.usu.setUsu_mailact("Y");
		// man.usu.setUsu_ver(0);

	}// Fin de obtenerDatoDlgUsuario

	private void seleccionarRegistroTablaUsuario() {

		obtenerRegistroTablaUsuario();
		llenarDlgUsuario();

		if (!tabEml.isEditing()) {

			refrescarFormulario();

			if (tabEml.getSelectedRow() > -1) {

				cmdEmlModificar.setEnabled(true);
				cmdEmlEliminar.setEnabled(true);

			}// Fin de if (tabEml.getSelectedRow() > -1)
		}// Fin de if(!tabDetVen.isEditing())
	}// Fin de seleccionarRegistroTablaEmpresa()

	private void obtenerRegistroTablaUsuario() {

		int filTab = tabEml.getSelectedRow();
		if (filTab > -1) {

			bookMarkUsuIde = (String) modTabUsu.getValueAt(filTab, 0);// Codigo de Usuario
			man.usu.setObjeto(man.obtenerItemListaUsuario(bookMarkUsuIde));

		}// Fin de if(parNumFil > -1)
		else {

			bookMarkUsuIde = "";// Codigo de Usuario
			man.usu.limpiarInstancia();

		}
	}// Fin de obtenerRegistroTablaPersona()

}// Fin d eclase principal
